package demo1;
/*
接口 是一种引用数据类型
1.接口 是使用interface方法 来修饰的
2.接口当中 不能有 被实现的方法，意味着只能有抽象方法。但是两个方法除外:一个是static修饰的方法 一个是被 defautt 修饰的方法
3.接口当中的 抽象方法 默认都是public abstract 修饰的!!
4.接口当中 的成员变量 默认都是 public static final修饰的!!
5.接口 不能进行实例化
6.类和 接口之间 的关系 ，可以使用implements来进行关联
7.接口 也是有 对应的 字节码文件的

接口 可以去引用 实现该接口的 具体的类型
 */
interface Shape {
    /*

        int A = 1;
        int B  =2;
        int C = 3;

    */
    void draw();

    /*default public  void test() {
        System.out.println("fdsfa");
    }*/
}
class Rect implements Shape {
    @Override
    public void draw() {
        System.out.println("矩形！");
    }
}
class Flower implements Shape {
    @Override
    public void draw() {
        System.out.println("❀");
    }
}
public class Test {
    public static void drawMap(Shape shape) {
        shape.draw();
    }
    public static void main(String[] args) {
        //demo1.Shape shape = new demo1.Shape();
        Shape shape1 = new Rect();
        Shape shape2 = new Flower();

        drawMap(shape1);
        drawMap(shape2);

        System.out.println("=============");

        Shape[] shapes = {new Rect(),new Rect(),new Flower(),new Flower()};

        for (Shape shape :shapes) {
            shape.draw();
        }
    }
}